package com.woniuxy.factories;

import com.woniuxy.Person;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @Author: 马宇航
 * @Todo: 第四类工厂模式，工厂+反射+文件 properties；
 *          第四类工厂模式，就是最终的Spring底层源码的实现方式
 * @DateTime: 01/17/0017 上午 11:55
 * @Component: 成都蜗牛学苑
 **/
public class ForthFactory {
    public Person doPerson(){
        //1.读取配置文件
        Properties properties = new Properties();
        //2.获取一个InputStream
        InputStream resourceAsStream = ForthFactory.class.getResourceAsStream("person.properties");
        //3.读取配置文件
        try {
            properties.load(resourceAsStream);
            //通过key获取全限定类名
            String chinese = properties.getProperty("person");
            Person person = (Person) Class.forName(chinese).newInstance();
            return person;
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
}
